package main

import "fmt"

type User struct {
	Name string
	Age  int
}
type Woman struct {
	User
	Sex int
}
type UU User

type M map[string]string

type Integer int

type Array []string

type FF func()

type A struct {
	Name string
}

func (i *A) GetName() {
	fmt.Println("A_name")
}

type C struct {
	*A
}

func main() {

	a := A{}
	c := C{&a}
	fmt.Printf("%p\n", &a)
	fmt.Printf("%p\n", &c.A)

	c.GetName()

	var ff FF = func() {
		fmt.Println("---")
	}
	ff()

	var u User = User{}

	var uu UU = UU{}

	var w Woman = Woman{}

	fmt.Println(u, uu, w)

	var m = M{}
	var ma = make(map[string]string)

	m = ma

	fmt.Println(m, ma)

	var ii Integer = Integer(0)
	var i int = 0

	fmt.Println(ii, i)

	var arr Array = Array{}
	var arr2 []string = []string{}
	arr = arr2
	fmt.Println(arr, arr2)

	fmt.Printf("%T\n", arr)
	fmt.Printf("%T\n", arr2)

}
